/*
 * Параметры материала среды.
 * MAT_RHO - плотность материала, в кг/м3.
 * MAT_C   - продольная скорость звука в среде, в м/c.
 */
#define MAT_RHO 1000
#define MAT_C   1000

/*
 * Шаг интегрирования по времени.
 * Должен удовлетворять условию Куранта для схемы.
 */
#define TAU 0.001

/*
 * Число шагов разностной схемы.
 */
#define TIME_STEPS 1500

/*
 * Параметры сохранения.
 * SAVE_STEP - через сколько шагов делать сохранение.
 * Если номер шага i, то делается проверка i % SAVE_STEP == 0, и если условие выполнено, то выполняется сохранение.
 * Номера шагов начинаются с 0, соответственно первый шаг сохраняется всегда.
 * 
 * SAVE_DUMP_NAME - название файла для сохранения всей области,
 * навание дается в формате для функции printf, через %d определяется номер шага для сохранения.
 * Например "out-%03d.vtk" - будет сохранять в файлы, out-000.vtk, out-001.vtk и т.д.
 * Сохранение идет в файл вормата legasy VTK.
 * Для просмотра можно использовать любые программы. поддерживающие такой формат данных.
 * Из свободных - ParaView (http://paraview.org/), MayaVi (http://mayavi.sourceforge.net/), VisIt (https://wci.llnl.gov/codes/visit/).
 * 
 * SAVE_SEISMO_NAME -  название файла для созранения сейсмограммы.
 * Сохраняется в виде таблицы, строка - значения компоненты y (вертикальная) скорости на дневной поверхности в один момент времени.
 * Каждая следующая строка - следующий момент времени, сохраняется только каждый SAVE_STEP.
 */
#define SAVE_STEP 10
#define SAVE_DUMP_NAME "out-%03d.vtk"
#define SAVE_SEISMO_NAME "seismo.txt"

/*
 * Размера расчетной области в м.
 * SIZE_L - размер по горизонтали (ось X).
 * SIZE_H - размер по вертикали, мощность слоя (ось Y).
 */
#define SIZE_L 1000
#define SIZE_H 1000

/*
 * Число узлов в разностной сетки по каждой из осей.
 * N_X - число узлов по оси X.
 * N_Y - число узлов по оси Y.
 */
#define N_X 100
#define N_Y 100

/*
 * Положение каверны.
 * Задается координатами левого нижнего угла каверны в м.
 * CAVERN_A -  координата угла комерны X.
 * CAVERN_B -  координата угла комерны Y.
 */
#define CAVERN_A 500
#define CAVERN_B -200

/*
 * Размеры каверны в м.
 * CAVERN_L - размер каверны по горизонтали.
 * CAVERN_H - размер каверны по вертикали.
 */
#define CAVERN_L 100
#define CAVERN_H  50

/*
 * Тип начальных условий.
 * INIT_TYPE - если 1 - сферический взрыв, 2 - плоская волна.
 */
#define INIT_TYPE 2

/*
 * Форма импульса начального возмущения.
 * Задается в виде функции от координаты y = f(x).
 * Где x принадлежит интервалу [0, 1], значение y должно лежать в пределах [-1, 1].
 */
#define INIT_PULSE(x) (1.0)

/*
 * Амплитуда модуля скорости начального импульса.
 */
#define INIT_MAGNITUDE 1.0

/*
 * Параметры начальных условия в виде фронта упругой волны.
 */
#define WAVE_O_X 300
#define WAVE_O_Y -100
#define WAVE_DIR_X 0
#define WAVE_DIR_Y -1
#define WAVE_W 50

/*
 * Параметры начальных условий в виде сферического взрыва.
 */
#define BALL_R1 5
#define BALL_R2 100
#define BALL_O_X 500
#define BALL_O_Y -500
